/**
 * 
 */
package com.pengpeng.android.framework;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;

import com.pengpeng.android.entity.MessageEntity;

/**
 * @author lilidan
 *
 */
public class MessageManager {

	/**
	 * 
	 */
	private List<MessageEntity> sendqueue=null;
	private boolean sendqueuemutex=true;
	private IResultMessageManager resultmanager=null;
	private CommManager commmanager=null;
	
	public MessageManager(IResultMessageManager resultmanager) {
		// TODO Auto-generated constructor stub
		this.resultmanager=resultmanager;
		commmanager=new CommManager();
		sendqueue=new ArrayList<MessageEntity>();
		
	}
	public boolean setMessage(MessageEntity messageentity,boolean ifsendatonce)
	{
		if(null==sendqueue)
		{
			return false;
		}
		sendqueue.add(messageentity);
		if(ifsendatonce==true)
		{
			return sendMessages();
		}
		return true;
	}
	
	public boolean deleteMessage(MessageEntity messageentity)
	{
		MessageEntity messageentitytemp;
		String messageid;
		String messagetimestr;
		SimpleDateFormat dataformat=new SimpleDateFormat("yyyyMMddHHmmss");
		
		messageid=messageentity.getMessageid();
		if(messageid.equals(""))
		{
			messagetimestr=dataformat.format(messageentity.getStartsendtime());
	    	messageid=messageentity.getMessagetype()+messageentity.getTarget()+messagetimestr;
	    	messageentity.setMessageid(messageid);
		}
		
	    for(int i=0;i<sendqueue.size();i++)
	    {
	       messageentitytemp=sendqueue.get(i);
	       messageid=messageentitytemp.getMessageid();
	       
	       if(messageid.equals(""))
	       {
	    	   messagetimestr=dataformat.format(messageentitytemp.getStartsendtime());
	    	   messageid=messageentitytemp.getMessagetype()+messageentitytemp.getTarget()+messagetimestr;
	       }
	       
	       if(messageid.equals(messageentity.getMessageid()))
	       {
	    	   sendqueue.remove(i);
	       }
	     
	    }//for
		return true;
	}
	
	public boolean sendMessages()
	{
	    if(null==commmanager||null==sendqueue)
	    {
	    	return false;
	    }
	    MessageEntity messageentity;
	    String messagestr="";
	    String urlstr="";
	    String resultstr="";
	    for(int i=0;i<sendqueue.size();i++)
	    {
	       messageentity=sendqueue.get(i);
           if(i==0)
           {
        	   messagestr+=messageentity.getMessagetype();
        	   messagestr+="|"+messageentity.getMessageid();
        	   messagestr+="|"+messageentity.getMessagetext();
        	   messagestr+="|"+messageentity.getTarget();
        	   messagestr+="|"+messageentity.getIfneedconfirm();
        	   messagestr+="|"+messageentity.getStartsendtime();
           }
           else
           {
        	   messagestr+="%%"+messageentity.getMessagetype();
        	   messagestr+="|"+messageentity.getMessageid();
        	   messagestr+="|"+messageentity.getMessagetext();
        	   messagestr+="|"+messageentity.getTarget();
        	   messagestr+="|"+messageentity.getIfneedconfirm();
        	   messagestr+="|"+messageentity.getStartsendtime();
           }
           
           if(messageentity.getIfneedconfirm().equals("0"))
           {
        	   sendqueue.remove(i);
           }
	     
	    }//for
	    
	    resultstr=commmanager.sendMessages(urlstr, messagestr);
	    if(resultstr.equals("nettimeout"))
	    {
	    	//如果发送网络故作或超时，
	    }
	    return resultmanager.handleResuleMessage(resultstr);
	}//sendMessages

}
